/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.Timer;

/**
 *
 * @author Gean
 */
public class Rockeiro {

    //Sprites Personagem
    
    //Direita
    public String imgRockeiroParadoDireita = "/Imagens/rockeiroParadoDireita.png";
    private String imgRockeiroMov1Direita = "/Imagens/rockeiroMov1Direita.png";
    private String imgRockeiroMov2Direita = "/Imagens/rockeiroMov2Direita.png";
    private String imgRockeiroMov3Direita = "/Imagens/rockeiroMov3Direita.png";
    
    //Esquerda
    public String imgRockeiroParadoEsquerda = "/Imagens/rockeiroParadoEsquerda.png";
    private String imgRockeiroMov1Esquerda = "/Imagens/rockeiroMov1Esquerda.png";
    private String imgRockeiroMov2Esquerda = "/Imagens/rockeiroMov2Esquerda.png";
    private String imgRockeiroMov3Esquerda = "/Imagens/rockeiroMov3Esquerda.png";
    
    private ImageIcon carregaSprite;
    private Image spriteRockeiro;
    
    //Movimentacao
    private int deslocamentoX;
    private int deslocamentoY;
    private int posicaoX;
    private int posicaoY;
    private boolean andandoParaDireita;
    private boolean andandoParaEsquerda;
    private Timer temporizador;
    private int contatorTrocaImagem;

    public Rockeiro() {
        this.carregaSprite = new ImageIcon(this.getClass().getResource(imgRockeiroParadoDireita));
        this.spriteRockeiro = carregaSprite.getImage();

        this.posicaoX = 40;
        this.posicaoY = 60;
        
        iniciaAnimacao();
    }

    public void iniciaMovimentacao() {
        this.setPosicaoX(this.posicaoX + getDeslocamentoX());
        this.setPosicaoY(this.posicaoY + getDeslocamentoY());
    }

    public void iniciaAnimacao() {
        temporizador = new Timer(80, new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {

                //Direita
                if (isAndandoParaDireita() == true) {
                   setDeslocamentoX(2);

                    if (getContatorTrocaImagem() == 1) {
                        alteraSprite(imgRockeiroMov1Direita);

                        contatorTrocaImagem++;
                        
                    } else if (getContatorTrocaImagem() == 2) {
                        alteraSprite(imgRockeiroMov2Direita);

                        contatorTrocaImagem++;
                        
                    } else if (getContatorTrocaImagem() == 3) {
                        alteraSprite(imgRockeiroMov3Direita);

                        contatorTrocaImagem++;
                        
                    } else {
                        alteraSprite(imgRockeiroParadoDireita);
                        
                        contatorTrocaImagem = 1;
                    }

                //Esquerda    
                } else if (isAndandoParaEsquerda() == true) {
                    setDeslocamentoX(-2);

                    if (getContatorTrocaImagem() == 1) {
                        alteraSprite(imgRockeiroMov1Esquerda);

                        contatorTrocaImagem++;
                        
                    } else if (getContatorTrocaImagem() == 2) {
                        alteraSprite(imgRockeiroMov2Esquerda);

                        contatorTrocaImagem++;
                        
                    } else if (getContatorTrocaImagem() == 3) {
                        alteraSprite(imgRockeiroMov3Esquerda);

                        contatorTrocaImagem++;
                        
                    } else {
                        alteraSprite(imgRockeiroParadoEsquerda);
                        
                        setContatorTrocaImagem(1);
                    }
                }
            }
        });
    }

    public void alteraSprite(String caminho) {
        ImageIcon img = new ImageIcon(getClass().getResource(caminho));
        this.spriteRockeiro = img.getImage();
    }

    //Getters e Setters
    public int getPosicaoX() {
        return posicaoX;
    }

    public void setPosicaoX(int posicaoX) {
        this.posicaoX = posicaoX;
    }

    public int getPosicaoY() {
        return posicaoY;
    }

    public void setPosicaoY(int posicaoY) {
        this.posicaoY = posicaoY;
    }

    public int getDeslocamentoX() {
        return deslocamentoX;
    }

    public void setDeslocamentoX(int deslocamentoX) {
        this.deslocamentoX = deslocamentoX;
    }

    public int getDeslocamentoY() {
        return deslocamentoY;
    }

    public void setDeslocamentoY(int deslocamentoY) {
        this.deslocamentoY = deslocamentoY;
    }

    public Image getImagem() {
        return getSpriteRockeiro();
    }

    public Image getSpriteRockeiro() {
        return spriteRockeiro;
    }

    public Timer getTemporizador() {
        return temporizador;
    }

    public int getContatorTrocaImagem() {
        return contatorTrocaImagem;
    }

    public void setContatorTrocaImagem(int contatorTrocaImagem) {
        this.contatorTrocaImagem = contatorTrocaImagem;
    }

    public boolean isAndandoParaDireita() {
        return andandoParaDireita;
    }

    public void setAndandoParaDireita(boolean andandoParaDireita) {
        this.andandoParaDireita = andandoParaDireita;
    }

    public boolean isAndandoParaEsquerda() {
        return andandoParaEsquerda;
    }

    public void setAndandoParaEsquerda(boolean andandoParaEsquerda) {
        this.andandoParaEsquerda = andandoParaEsquerda;
    }
    
}